/* Juego "Linea 4". Programa que utiliza los TDA. */
#include <stdio.h>
#include <stdlib.h>
#include "../include/tablero.h"
#include "../include/cadena.h"

void menu(void);
void ingresarNombre(Tcadena, Tcadena);
void jugar(Ttablero, Tcadena, Tcadena);

int main(void)
{
	char seguir[2];
	Tcadena jugador1=crearCadena("Jugador 1"), jugador2=crearCadena("Jugador 2");
	Ttablero tablero=crearTablero();
	menu();
	ingresarNombre(jugador1, jugador2);
	do
	{
		vaciarTablero(tablero);
		jugar(tablero, jugador1, jugador2);
		printf("¿Desea volver a jugar? (S/N) ");
		scanf("%1s", seguir);
	} while((seguir[0]=='s')||(seguir[0]=='S'));
	return 0;
}

void jugar(Ttablero tab, Tcadena jug1, Tcadena jug2)
{
	Tcadena jugador=crearCadena(""), cad=crearCadena("Ingrese una columna:");
	int ganado=0, finJuego=0, col, turno=0, cargado=0;
	while(!finJuego)
	{
		if(turno%2)
			asignarCadena(jugador, jug2);
		else
			asignarCadena(jugador, jug1);
		system("clear");
		imprimirTablero(tab);
		printf("\n");
		imprimirCadena(jugador);
		imprimirCadena(cad);
		scanf("%d", &col);
		if(turno%2)
			cargado=cargarTablero(tab, COLOR1, col-1);
		else
			cargado=cargarTablero(tab, COLOR2, col-1);
		if(cargado)
		{
			turno++;
			finJuego=buscarLineaCuatro(tab);
			if(finJuego)
				ganado=1;
			else if(tab->cantFichas>=42)
				finJuego=1;
		}
		if(finJuego)
		{
			system("clear");
			imprimirTablero(tab);
			if(ganado)
			{
				printf("\nEl ganador es: ");
				imprimirCadena(jugador);
			}
			else
				printf("\nEl juego ha finalizado.\n");
		}
	}
}

void menu(void)
{
	char opt[10];
	system("clear");
	Tcadena titulo=crearCadena("\t\t\t* * * L I N E A   4 * * *");
	imprimirCadena(titulo);
	printf("\tInstrucciones:\n\n");
	printf("Cantidad de jugadores: 2\n\n");
	printf("Reglas: Los jugadores se turnan para dejar caer\n");
	printf("sus fichas en las ranuras.\n\n");
	printf("Objetivo: Colocar cuatro fichas iguales en fila,\n");
	printf("ya sea horizontal, vertical o diagonal.\n\n\n\n");
	printf("Presione ENTER para jugar...");
	scanf("%[^\n]", opt);	getchar();
	destruirCadena(titulo);
}

void ingresarNombre(Tcadena jug1, Tcadena jug2)
{
	char nombre[20];
	printf("\n\nIngrese el nombre de los jugadores:\n");
	printf("Jugador 1: ");
	scanf("%[^\n]", nombre);	getchar();
	asignar(jug1, nombre);
	printf("Jugador 2: ");
	scanf("%[^\n]", nombre);	getchar();
	asignar(jug2, nombre);
}
